Entity Framework (EF) সাধারণত LINQ (Language Integrated Query) ব্যবহার করে ডেটা কুয়েরি করে থাকে, তবে অনেক সময় ডেটাবেস সম্পর্কিত জটিল কুয়েরি বা স্পেসিফিক অপারেশন সম্পাদনের জন্য Stored Procedures বা Raw SQL Queries ব্যবহার করা প্রয়োজন হতে পারে। EF-এ এই দুটি অপশন ব্যবহারের মাধ্যমে আপনি উন্নত কুয়েরি অপ্টিমাইজেশন এবং ডেটাবেসের পারফরম্যান্স উন্নত করতে পারবেন।
Stored Procedure হল ডেটাবেসে সংরক্ষিত একটি প্রি-কম্পাইলড SQL স্টেটমেন্ট বা ব্লক, যা একাধিক অপারেশন বা কুয়েরি একসাথে সম্পাদন করে। Entity Framework-এ Stored Procedure ব্যবহার করার জন্য, আপনি EF এর মাধ্যমে সেগুলো কল করতে পারেন এবং ফলাফল হ্যান্ডল করতে পারেন।
Entity Framework-এ Stored Procedure কল করার জন্য, আপনাকে DbContext এর মাধ্যমে সেই Stored Procedure এর নাম উল্লেখ করে কল করতে হবে। যদি Stored Procedure কোনো আউটপুট রিটার্ন করে, তবে আপনি তার ফলাফলগুলিকে একটি DbSet বা অন্য কোনো Collection-এ ম্যাপ করতে পারবেন।
using (var context = new YourDbContext())
{
var result = context.Database
.SqlQuery<YourEntity>("EXEC YourStoredProcedure @param1, @param2",
new SqlParameter("@param1", value1),
new SqlParameter("@param2", value2))
.ToList();
}
এখানে YourStoredProcedure
হচ্ছে Stored Procedure এর নাম এবং YourEntity
হচ্ছে সেই মডেল ক্লাস যেটি আপনি রিটার্নেড ডেটার সাথে ম্যাপ করতে চান।
Stored Procedure শুধু ডেটা রিড করতে নয়, Insert, Update, Delete অপারেশনও করতে পারে। নিচে একটি উদাহরণ দেওয়া হলো, যেখানে Stored Procedure ব্যবহার করে ডেটাবেসে Insert করা হয়েছে:
using (var context = new YourDbContext())
{
var result = context.Database
.ExecuteSqlCommand("EXEC InsertUser @name, @email",
new SqlParameter("@name", "John Doe"),
new SqlParameter("@email", "john.doe@example.com"));
}
এখানে ExecuteSqlCommand
ব্যবহার করা হয়েছে কারণ এটি কোনো রিটার্ন ভ্যালু প্রদান করবে না। এটি শুধুমাত্র SQL কমান্ড বা Stored Procedure চালায়।
Entity Framework এর মাধ্যমে আপনি Raw SQL Queries ব্যবহার করতে পারেন, যেখানে আপনি ম্যানুয়ালি SQL কুয়েরি লিখে ডেটাবেস থেকে ডেটা ফেচ করতে পারেন। Raw SQL Query ব্যবহার করার সময়, EF আপনাকে কুয়েরি ফরম্যাটের সঠিকতা নিশ্চিত করতে সাহায্য করবে।
যখন আপনি Raw SQL কুয়েরি ব্যবহার করেন, তখন আপনার ডেটাবেসের টেবিলের সাথে সঠিক Entity ক্লাসের ম্যাপিং নিশ্চিত করতে হবে।
using (var context = new YourDbContext())
{
var users = context.Users
.FromSqlRaw("SELECT * FROM Users WHERE Age > {0}", 18)
.ToList();
}
এখানে FromSqlRaw ব্যবহার করা হয়েছে, যার মাধ্যমে আপনি SQL কুয়েরি রান করতে পারেন এবং ডেটাবেস থেকে ফলাফল মডেল ক্লাসে ম্যাপ হয়।
Raw SQL কুয়েরি দিয়ে আপনি ডেটাবেসে Update বা Delete অপারেশনও করতে পারেন। নিচে একটি উদাহরণ দেওয়া হলো:
using (var context = new YourDbContext())
{
var result = context.Database
.ExecuteSqlRaw("UPDATE Users SET Age = Age + 1 WHERE Age < {0}", 30);
}
এখানে ExecuteSqlRaw ব্যবহার করা হয়েছে যা Update বা Delete অপারেশন পরিচালনা করে এবং কোনো ভ্যালু রিটার্ন করে না।
Stored Procedure এবং Raw SQL কুয়েরি ব্যবহার করা Entity Framework এ আরও উন্নত এবং কাস্টম ডেটাবেস অপারেশন পরিচালনার জন্য সহায়ক। এগুলি ডেটাবেস পারফরম্যান্স বৃদ্ধি করতে পারে এবং কাস্টম SQL কুয়েরি ব্যবহারের সুযোগ প্রদান করে। তবে, এগুলোর ব্যবহার সঠিকভাবে করা উচিত, যাতে কোডের সুরক্ষা এবং Maintenance সুবিধাজনক থাকে।
common.read_more